One of the problems facing media streaming over the Internet is congestion due to high traffic loads. Packets are often dropped or lost when routers and switches are overloaded with traffic. Dropped or lost packets result in lower performance and lower quality media streams. Since the quality of a media stream has a direct correlation to the number of routers and switches that a media stream must transverse, data streaming architects are faced with the challenge of designing algorithms for finding the nearest streaming server to serve a request from a requesting system.
One technology that has been used to provide the least possible network distance has been to embed a complex set of code in each router in a given network. When a request or data is received at the given network's main server, the server routes the request to the nearest router in accordance with a predetermined set of rules, or metrics. Each nearest router maintains and uses predetermined metrics to route the request to the next nearest router until the nearest streaming server is found. The requesting system can then receive data from the nearest streaming server.
One drawback of this approach, however, is that it is complex, expensive, and can be slow. For each router, complex metrics must be developed and embedded to enable the router to determine where a request is coming from, and where the nearest site for serving the request is located. Based on this information, it routes it to another router until the site nearest to the requesting system is reached. Since each router passes information onto another router, the process of finding a nearest site can be slow. Moreover, since each router must have special hardware for communicating with other routers, the infrastructure for implementing this approach can be very costly.
Another approach has been for a network's main server to utilize a simple round robin metrics and dynamic information (such as which servers are available) to determine which streaming server is to be selected to fulfill a request. One drawback to this approach is that a round robin approach may result in the selection of a streaming server that is not the closest streaming server to serve the request from.